// 实现⼀个算法，⽀持任意2-16进制数之间转换，如：2进制转7进制，7进制转16进制，15进制转8进制等。(20)
// 输⼊: 9(10), 8 #输⼊两个参数：10进制的9(字符串)，转换⽬标进制8(数字)，输出：11
// #返回结果，8进制的11(字符串)
// 输⼊: 1111(2), 15 #输⼊2进制的1111，转换为15进制
// 输出：10(15)
// #返回结果，15进制的10(字符串)
pub fn convert_base(num_str: &str, to_base: u32) -> String {
    let (num, from_base) = {
        let parts: Vec<&str> = num_str.split('(').collect();
        (
            parts[0],
            parts[1].trim_end_matches(')').parse::<u32>().unwrap(),
        )
    };

    let decimal_value = u32::from_str_radix(num, from_base).unwrap();

    let converted: String = std::iter::successors(Some(decimal_value), |&value| {
        if value > 0 {
            Some(value / to_base)
        } else {
            None
        }
    })
    .take_while(|&value| value > 0)
    .map(|value| {
        let remainder = value % to_base;
        if remainder < 10 {
            (remainder as u8 + b'0') as char
        } else {
            (remainder as u8 - 10 + b'a') as char
        }
    })
    .collect();

    if converted.is_empty() {
        "0".to_string()
    } else {
        converted.chars().rev().collect()
    }
}
